package cn.seaboot.flake.where;

import org.apache.ibatis.type.JdbcType;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 查询条件注解
 * <p>
 * 根据 VO 的字段配置，将结果转换成 where 子句
 * <p>
 * 完全开放 SQL 权限，风险过大，
 * 注解配置是必须的，在编译完成后，字段配置完全固定；
 */
@Target({METHOD, FIELD})
@Retention(RUNTIME)
public @interface Condition {
    /**
     * 真实列名
     * where 子句中用到的列名
     *
     * @return -
     */
    String name() default "";

    /**
     * 真实表名
     * where 子句中用到的表名
     *
     * @return -
     */
    String table() default "";

    /**
     * 字段类型
     */
    Class<?> javaType() default Object.class;

    /**
     * jdbc 类型
     */
    JdbcType jdbcType() default JdbcType.VARCHAR;
}
